# # xss过滤
# import validators
from markupsafe import escape
# from validators import validator
#
#
def str_escape(s):
    if not s:
        return None
    return str(escape(s))
#
#
# between = validators.between
# '''
# 验证数字是否介于最小值和/或最大值之间。
# 这将适用于任何类似的类型，如浮点数、小数和日期，而不仅仅是整数。
# between(value, min=None, max=None)
#
#     min-数字的最小必需值。如果未提供，则不会检查最小值。
#     max-数字的最大值。如果未提供，将不检查最大值。
#
#         >>> from datetime import datetime
#
#         >>> between(5, min=2)
#         True
#
#         >>> between(13.2, min=13, max=14)
#         True
#
#         >>> between(500, max=400)
#         ValidationFailure(func=between, args=...)
#
#         >>> between(
#         ...     datetime(2000, 11, 11),
#         ...     min=datetime(1999, 11, 11)
#         ... )
#         True
# '''
#
# domain = validators.domain
# '''
# 返回给定值是否为有效域
# 如果值是有效域名，则此函数返回 True ，否则返回 ValidationFailure
# domain(value)
#     value-要验证的属性域字符串
#
#         >>> domain('example.com')
#         True
#
#         >>> domain('example.com/')
#         ValidationFailure(func=domain, ...)
# '''
#
# email = validators.email
# '''
#  验证电子邮件地址。验证成功时返回 True ，验证失败时返回
#
#      >>> email('someone@example.com')
#     True
#
#     >>> email('bogus@@')
#     ValidationFailure(func=email, ...)
# '''
#
# iban = validators.iban
# '''
# 返回给定值是否为有效的IBAN代码。
# 如果值是有效的IBAN，则此函数返回 True ，否则返回 ValidationFailure 。
#
#     >>> iban('DE29100500001061045672')
#     True
#
#     >>> iban('123456')
#     ValidationFailure(func=iban, ...)
# '''
#
# ipv4 = validators.ipv4
# '''
# 返回给定值是否为有效的IPv4地址。
#
#     >>> ipv4('123.0.0.7')
#     True
#
#     >>> ipv4('900.80.70.11')
#     ValidationFailure(func=ipv4, args={'value': '900.80.70.11'})
# '''
#
# ipv6 = validators.ipv6
# '''
# 返回给定值是否为有效的IP版本6地址。
#     >>> ipv6('abcd:ef::42:1')
#     True
#
#     >>> ipv6('abc.0.0.1')
#     ValidationFailure(func=ipv6, args={'value': 'abc.0.0.1'})
# '''
#
# length = validators.length
# '''
# 返回给定字符串的长度是否在指定范围内。
#     >>> length('something', min=2)
#     True
#
#     >>> length('something', min=9, max=9)
#     True
#
#     >>> length('something', max=5)
#     ValidationFailure(func=length, ...)
# '''
#
# mac_address = validators.mac_address
# '''
# 返回给定值是否为有效MAC地址。
# 如果该值是有效的MAC地址，则此函数返回 True ，否则返回 ValidationFailure 。
#
#     >>> mac_address('01:23:45:67:ab:CD')
#     True
#
#     >>> mac_address('00:00:00:00:00')
#     ValidationFailure(func=mac_address, args={'value': '00:00:00:00:00'})
# '''
#
# slug = validators.slug
# '''
# 验证给定值是否为有效的块。
# 有效的短信息只能包含字母数字字符、连字符和下划线。
#     >>> slug('my.slug')
#     ValidationFailure(func=slug, args={'value': 'my.slug'})
#
#     >>> slug('my-slug-2134')
#     True
# '''
#
# #truthy = validators.truthy
# '''
# 验证给定值不是错误值。
# '''
#
# url = validators.url
# '''
# 返回给定值是否为有效URL。
# 如果值是有效URL，则此函数返回 True ，否则返回 ValidationFailure 。
#
#     >>> url('http://foobar.dk')
#     True
#
#     >>> url('http://10.0.0.1')
#     True
#
#     >>> url('http://foobar.d')
#     ValidationFailure(func=url, ...)
#
#     >>> url('http://10.0.0.1', public=True)
#     ValidationFailure(func=url, ...)
# '''
#
# uuid = validators.uuid
# '''
# 返回给定值是否为有效UUID。
# 如果值是有效的UUID，则此函数返回 True ，否则返回 ValidationFailure 。
#
#     >>> uuid('2bc1c94f-0deb-43e9-92a1-4775189ec9f8')
#     True
#
#     >>> uuid('2bc1c94f 0deb-43e9-92a1-4775189ec9f8')
#     ValidationFailure(func=uuid, ...)
# '''
#
#
# @validator
# def even(value):
#     return not (value % 2)
#
#
# '''
# 一个装饰器，它使给定的函数验证器
# 每当给定函数被调用并返回 False 值时，这个装饰器返回 ValidationFailure 对象。
# >>> @validator
# ... def even(value):
# ...     return not (value % 2)
#
# >>> even(4)
# True
#
# >>> even(5)
# ValidationFailure(func=even, args={'value': 5})
# '''
